package com.xxg.renrenshoppingcart.service;

import com.xxg.renrenshoppingcart.domain.query.AddBatchProductQuery;
import com.xxg.renrenshoppingcart.domain.query.AddProductQuery;
import com.xxg.renrenshoppingcart.domain.query.RemoveProductQuery;
import com.xxg.renrencommon.domain.result.BaseResult;
import com.xxg.renrenshoppingcart.domain.result.CartProductResult;

import java.util.List;

/**
 * 购物车接口
 *
 * @author xxg
 * @date 2020/11/13
 */
public interface ShoppingCartService {
    /**
     * 添加商品到购物车
     *
     * @param userId 登录id
     * @param query  添加商品到购物车参数
     * @return BaseResult<Void>
     */
    BaseResult<Void> addProduct(String userId, AddProductQuery query);

    /**
     * 批量添加多个商品到购物车
     *
     * @param userId 登录id
     * @param query  批量添加多个商品到购物车参数
     * @return BaseResult<Void>
     */
    BaseResult<Void> addBatch(String userId, AddBatchProductQuery query);

    /**
     * 编辑购物车中商品数量
     *
     * @param userId 登录id
     * @param query  编辑购物车中商品数量参数
     * @return BaseResult<Void>
     */
    BaseResult<Void> updateProductQuantity(String userId, AddProductQuery query);

    /**
     * 将商品从购物车移除
     *
     * @param userId 登录id
     * @param query  将商品从购物车移除参数
     * @return BaseResult<Void>
     */
    BaseResult<Void> removeProduct(String userId, RemoveProductQuery query);

    /**
     * 清空购物车
     *
     * @param userId 登录id
     * @return BaseResult<Void>
     */
    BaseResult<Void> removeAllProduct(String userId);

    /**
     * 查询购物车
     *
     * @param userId 登录id
     * @return BaseResult<CartProductResult>
     */
    BaseResult<CartProductResult> queryProducts(String userId);
}